home *** CD-ROM | disk | FTP | other *** search
/ MacFormat España 15 / macformat_15.iso / Shareware Internet / Ciencia / CFG 2.3 (Shareware) / µCinema Converter / µCinema.c < prev    next >
C/C++ Source or Header  |  1994-04-03  |  6KB  |  278 lines

  1. /********************************************************************
  2.     µCinema Converter 1.0
  3.     module: µCinema.c
  4.     April 1994
  5.     by John A. Schlack
  6.  ********************************************************************/
  7.  
  8.  
  9. #include <GestaltEqu.h>
  10. #include <Movies.h>
  11. #include <size_t.h>
  12.  
  13. #include "apple events.h"
  14. #include "constants.h"
  15. #include "events.h"
  16. #include "menu bar.h"
  17. #include "PICS to QuickTime.h"
  18. #include "preferences.h"
  19. #include "pstring.h"
  20. #include "µCinema.h"
  21.  
  22.  
  23. /* --------------------------------------------------------------------------------- */
  24.  
  25.  
  26. #define ICON_ALERT_ID        500
  27. #define NO_ICON_ALERT_ID    501
  28. #define ERROR_STRING_SET    500
  29.  
  30. enum DISPLAY_SEVERITY { ALRT_ALERT, ALRT_NOTE, ALRT_CAUTION, ALRT_STOP };
  31.  
  32.  
  33. /* --------------------------------------------------------------------------------- */
  34.  
  35.  
  36. static unsigned short    pgmStatus;
  37. static unsigned char    errUnknown[] = "\pAn unknown error has occurred.  Quitting...";
  38.  
  39.  
  40. /* --------------------------------------------------------------------------------- */
  41.  
  42.  
  43. /* Private Function Prototypes */
  44.  
  45. void            main( void );
  46. static void        toolboxInit( void );
  47. static Boolean    verifyEnvironment( void );
  48. static void        globalInit( void );
  49. static void        messageAlert( unsigned char * msg, short alert_type );
  50.  
  51.  
  52. /* --------------------------------------------------------------------------------- */
  53.  
  54.  
  55. void main( void )
  56. {
  57.     toolboxInit();
  58.     globalInit();
  59.     if (!verifyEnvironment())
  60.         ExitToShell();
  61.     loadPreferences();
  62.     menuBarInit();
  63.  
  64.     if (!loadDragAndDrop())
  65.     {
  66.         while (!(programStatus( PS_APP_DONE ) && programStatus( PS_LAST_EVENT_NULL )))
  67.             doEvents();
  68.     }
  69.     
  70.     if (programStatus( PS_PREFS_DIRTY ))
  71.         savePreferences();
  72.     ExitToShell();
  73. }
  74.  
  75.  
  76. /* --------------------------------------------------------------------------------- */
  77.  
  78.  
  79. static void toolboxInit( void )
  80. {
  81.     MoreMasters();
  82.     InitGraf( &thePort );
  83.     InitFonts();
  84.     InitWindows();
  85.     InitMenus();
  86.     TEInit();
  87.     InitDialogs( nil );
  88.     InitCursor();
  89.     FlushEvents( everyEvent - diskMask - app4Mask, 0 );
  90. }
  91.  
  92.  
  93. /* --------------------------------------------------------------------------------- */
  94.  
  95.  
  96. /*
  97.     static Boolean verifyEnvironment( void )
  98.     
  99.     Description:
  100.         This function checks to see that the System has certain features installed.
  101.         System 7 and QuickTime are mandatory.  Apple Events are required to support
  102.         drag and drop.
  103.     
  104.     Input:
  105.         none
  106.  
  107.     Output:
  108.         none
  109.  
  110.     Globals / Regionals Modified:
  111.         none
  112.  
  113.     Returns:
  114.         True if program can proceed or false to abort.
  115. */
  116.  
  117.  
  118. static Boolean verifyEnvironment( void )
  119. {
  120.     long        response;
  121.     short        err = 0;
  122.     Boolean        gestaltAvail;
  123.  
  124. #define GestaltTrap    0xA1AD
  125. #define UnImpltrap    0xA89F
  126.  
  127.     gestaltAvail = ( NGetTrapAddress( GestaltTrap, OSTrap ) !=
  128.           NGetTrapAddress( UnImpltrap, OSTrap ) );
  129.     if (!gestaltAvail)
  130.     {
  131.         errorHandler( ERR_NO_GESTALT );
  132.         return false;
  133.     }
  134.     
  135.     if (Gestalt( gestaltSystemVersion, &response ) != noErr)
  136.         err = ERR_GESTALT_FAILED;
  137.     else if (response < 0x0700)
  138.         err = ERR_NO_SYSTEM7;
  139.  
  140.     if (err)
  141.     {
  142.         errorHandler( err );
  143.         return false;
  144.     }
  145.     
  146.     /* QuickTime */
  147.     
  148.     if (Gestalt( gestaltQuickTime, &response ) != noErr)
  149.     {
  150.         errorHandler( ERR_NO_QUICKTIME );
  151.         return false;
  152.     }
  153.  
  154.     /* FSSpec */
  155.  
  156.     if (Gestalt( gestaltFSAttr, &response ) != noErr)
  157.         err = ERR_NO_FSSPEC;
  158.     else if (!(response & (1 << gestaltHasFSSpecCalls)))
  159.         err = ERR_NO_FSSPEC;
  160.  
  161.     if (err)
  162.     {
  163.         errorHandler( err );
  164.         return false;
  165.     }
  166.  
  167.     /* Apple Events */
  168.  
  169.     if (Gestalt( gestaltAppleEventsAttr, &response ) != noErr)
  170.     {
  171.         if (response & (1 << gestaltAppleEventsPresent))
  172.             installProgramStatus( PS_APPLE_EVENTS );
  173.     }
  174.  
  175.     return true;
  176. }
  177.  
  178.  
  179. /* --------------------------------------------------------------------------------- */
  180.  
  181.  
  182. static void globalInit( void )
  183. {
  184.     pgmStatus = 0;
  185. }
  186.  
  187.  
  188. /* --------------------------------------------------------------------------------- */
  189.  
  190.  
  191. void errorHandler( short stringNum )
  192. {
  193.     Str255    mPtr;
  194.     
  195.     GetIndString( &(mPtr[0]), ERROR_STRING_SET, stringNum );
  196.     if (*mPtr)
  197.         messageAlert( mPtr, ALRT_CAUTION );
  198.     else
  199.         messageAlert( errUnknown, ALRT_CAUTION );
  200. }
  201.  
  202.  
  203. /* --------------------------------------------------------------------------------- */
  204.  
  205.  
  206. void errorHandlerParameter( short stringNum, unsigned char * message )
  207. {
  208.     Str255    mPtr;
  209.     
  210.     GetIndString( &(mPtr[0]), ERROR_STRING_SET, stringNum );
  211.     if (*mPtr)
  212.     {
  213.         pstrsub( mPtr, message );
  214.         messageAlert( mPtr, ALRT_CAUTION );
  215.     }
  216.     else
  217.         messageAlert( errUnknown, ALRT_CAUTION );
  218. }
  219.  
  220.  
  221. /* --------------------------------------------------------------------------------- */
  222.  
  223.  
  224. static void messageAlert( unsigned char * msg, short alert_type )
  225. {
  226.     short        alert_id;
  227.     
  228.     ParamText( msg, nil, nil, nil );
  229.     alert_id = (alert_type == ALRT_ALERT) ? NO_ICON_ALERT_ID : ICON_ALERT_ID;
  230.     switch( alert_type )
  231.     {
  232.         case ALRT_ALERT:
  233.             Alert( NO_ICON_ALERT_ID, nil );
  234.             break;
  235.         case ALRT_NOTE:
  236.             NoteAlert( ICON_ALERT_ID, nil );
  237.             break;
  238.         case ALRT_STOP:
  239.             StopAlert( ICON_ALERT_ID, nil );
  240.             break;
  241.         case ALRT_CAUTION:
  242.         default:
  243.             CautionAlert( ICON_ALERT_ID, nil );
  244.             break;
  245.     }
  246. }
  247.  
  248.  
  249. /* --------------------------------------------------------------------------------- */
  250.  
  251.  
  252. void installProgramStatus( short pgmBit )
  253. {
  254.     pgmStatus |= (1 << pgmBit);
  255. }
  256.  
  257.  
  258. /* --------------------------------------------------------------------------------- */
  259.  
  260.  
  261. Boolean programStatus( short pgmBit )
  262. {
  263.     return ((pgmStatus & (1 << pgmBit)) ? true : false);
  264. }
  265.  
  266.  
  267. /* --------------------------------------------------------------------------------- */
  268.  
  269.  
  270. void alterProgramStatus( short pgmBit, Boolean setBit )
  271. {
  272.     unsigned short    mask = 1 << pgmBit;
  273.     if (setBit)
  274.         pgmStatus |= mask;
  275.     else
  276.         pgmStatus &= (~mask);
  277. }
  278.